/**
 * chroma.js - JavaScript library for color conversions
 *
 * Copyright (c) 2011-2019, Gregor Aisch
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain the above copyright notice, this
 * list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice,
 * this list of conditions and the following disclaimer in the documentation
 * and/or other materials provided with the distribution.
 *
 * 3. The name Gregor Aisch may not be used to endorse or promote products
 * derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * -------------------------------------------------------
 *
 * chroma.js includes colors from colorbrewer2.org, which are released under
 * the following license:
 *
 * Copyright (c) 2002 Cynthia Brewer, Mark Harrower,
 * and The Pennsylvania State University.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied. See the License for the specific
 * language governing permissions and limitations under the License.
 *
 * ------------------------------------------------------
 *
 * Named colors are taken from X11 Color Names.
 * http://www.w3.org/TR/css3-color/#svg-color
 *
 * @preserve
 */

!(function (r, e) {
  "object" == typeof exports && "undefined" != typeof module
    ? (module.exports = e())
    : "function" == typeof define && define.amd
    ? define(e)
    : ((r = "undefined" != typeof globalThis ? globalThis : r || self).chroma =
        e());
})(this, function () {
  "use strict";
  for (
    var r = function (r, e, n) {
        return (
          void 0 === e && (e = 0),
          void 0 === n && (n = 1),
          r < e ? e : r > n ? n : r
        );
      },
      e = r,
      n = {},
      t = 0,
      a = [
        "Boolean",
        "Number",
        "String",
        "Function",
        "Array",
        "Date",
        "RegExp",
        "Undefined",
        "Null",
      ];
    t < a.length;
    t += 1
  ) {
    var f = a[t];
    n["[object " + f + "]"] = f.toLowerCase();
  }
  var o = function (r) {
      return n[Object.prototype.toString.call(r)] || "object";
    },
    u = o,
    c = o,
    i = Math.PI,
    l = {
      clip_rgb: function (r) {
        (r._clipped = !1), (r._unclipped = r.slice(0));
        for (var n = 0; n <= 3; n++)
          n < 3
            ? ((r[n] < 0 || r[n] > 255) && (r._clipped = !0),
              (r[n] = e(r[n], 0, 255)))
            : 3 === n && (r[n] = e(r[n], 0, 1));
        return r;
      },
      limit: r,
      type: o,
      unpack: function (r, e) {
        return (
          void 0 === e && (e = null),
          r.length >= 3
            ? Array.prototype.slice.call(r)
            : "object" == u(r[0]) && e
            ? e
                .split("")
                .filter(function (e) {
                  return void 0 !== r[0][e];
                })
                .map(function (e) {
                  return r[0][e];
                })
            : r[0]
        );
      },
      last: function (r) {
        if (r.length < 2) return null;
        var e = r.length - 1;
        return "string" == c(r[e]) ? r[e].toLowerCase() : null;
      },
      PI: i,
      TWOPI: 2 * i,
      PITHIRD: i / 3,
      DEG2RAD: i / 180,
      RAD2DEG: 180 / i,
    },
    h = { format: {}, autodetect: [] },
    s = l.last,
    d = l.clip_rgb,
    b = l.type,
    p = h,
    g = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = this;
      if (
        "object" === b(r[0]) &&
        r[0].constructor &&
        r[0].constructor === this.constructor
      )
        return r[0];
      var t = s(r),
        a = !1;
      if (!t) {
        (a = !0),
          p.sorted ||
            ((p.autodetect = p.autodetect.sort(function (r, e) {
              return e.p - r.p;
            })),
            (p.sorted = !0));
        for (var f = 0, o = p.autodetect; f < o.length; f += 1) {
          var u = o[f];
          if ((t = u.test.apply(u, r))) break;
        }
      }
      if (!p.format[t]) throw new Error("unknown format: " + r);
      var c = p.format[t].apply(null, a ? r : r.slice(0, -1));
      (n._rgb = d(c)), 3 === n._rgb.length && n._rgb.push(1);
    };
  g.prototype.toString = function () {
    return "function" == b(this.hex)
      ? this.hex()
      : "[" + this._rgb.join(",") + "]";
  };
  var v = g,
    m = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(m.Color, [null].concat(r)))();
    };
  (m.Color = v), (m.version = "2.4.2");
  var y = m,
    k = l.unpack,
    w = Math.max,
    M = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = k(r, "rgb"),
        t = n[0],
        a = n[1],
        f = n[2],
        o = 1 - w((t /= 255), w((a /= 255), (f /= 255))),
        u = o < 1 ? 1 / (1 - o) : 0,
        c = (1 - t - o) * u,
        i = (1 - a - o) * u,
        l = (1 - f - o) * u;
      return [c, i, l, o];
    },
    N = l.unpack,
    _ = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = (r = N(r, "cmyk"))[0],
        t = r[1],
        a = r[2],
        f = r[3],
        o = r.length > 4 ? r[4] : 1;
      return 1 === f
        ? [0, 0, 0, o]
        : [
            n >= 1 ? 0 : 255 * (1 - n) * (1 - f),
            t >= 1 ? 0 : 255 * (1 - t) * (1 - f),
            a >= 1 ? 0 : 255 * (1 - a) * (1 - f),
            o,
          ];
    },
    x = y,
    A = v,
    E = h,
    F = l.unpack,
    P = l.type,
    O = M;
  (A.prototype.cmyk = function () {
    return O(this._rgb);
  }),
    (x.cmyk = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        A,
        [null].concat(r, ["cmyk"])
      ))();
    }),
    (E.format.cmyk = _),
    E.autodetect.push({
      p: 2,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (((r = F(r, "cmyk")), "array" === P(r) && 4 === r.length))
          return "cmyk";
      },
    });
  var j = l.unpack,
    G = l.last,
    R = function (r) {
      return Math.round(100 * r) / 100;
    },
    q = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = j(r, "hsla"),
        t = G(r) || "lsa";
      return (
        (n[0] = R(n[0] || 0)),
        (n[1] = R(100 * n[1]) + "%"),
        (n[2] = R(100 * n[2]) + "%"),
        "hsla" === t || (n.length > 3 && n[3] < 1)
          ? ((n[3] = n.length > 3 ? n[3] : 1), (t = "hsla"))
          : (n.length = 3),
        t + "(" + n.join(",") + ")"
      );
    },
    L = l.unpack,
    I = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = (r = L(r, "rgba"))[0],
        t = r[1],
        a = r[2];
      (n /= 255), (t /= 255), (a /= 255);
      var f,
        o,
        u = Math.min(n, t, a),
        c = Math.max(n, t, a),
        i = (c + u) / 2;
      return (
        c === u
          ? ((f = 0), (o = Number.NaN))
          : (f = i < 0.5 ? (c - u) / (c + u) : (c - u) / (2 - c - u)),
        n == c
          ? (o = (t - a) / (c - u))
          : t == c
          ? (o = 2 + (a - n) / (c - u))
          : a == c && (o = 4 + (n - t) / (c - u)),
        (o *= 60) < 0 && (o += 360),
        r.length > 3 && void 0 !== r[3] ? [o, f, i, r[3]] : [o, f, i]
      );
    },
    B = l.unpack,
    C = l.last,
    D = q,
    Y = I,
    S = Math.round,
    T = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = B(r, "rgba"),
        t = C(r) || "rgb";
      return "hsl" == t.substr(0, 3)
        ? D(Y(n), t)
        : ((n[0] = S(n[0])),
          (n[1] = S(n[1])),
          (n[2] = S(n[2])),
          ("rgba" === t || (n.length > 3 && n[3] < 1)) &&
            ((n[3] = n.length > 3 ? n[3] : 1), (t = "rgba")),
          t + "(" + n.slice(0, "rgb" === t ? 3 : 4).join(",") + ")");
    },
    $ = l.unpack,
    z = Math.round,
    X = function () {
      for (var r, e = [], n = arguments.length; n--; ) e[n] = arguments[n];
      var t,
        a,
        f,
        o = (e = $(e, "hsl"))[0],
        u = e[1],
        c = e[2];
      if (0 === u) t = a = f = 255 * c;
      else {
        var i = [0, 0, 0],
          l = [0, 0, 0],
          h = c < 0.5 ? c * (1 + u) : c + u - c * u,
          s = 2 * c - h,
          d = o / 360;
        (i[0] = d + 1 / 3), (i[1] = d), (i[2] = d - 1 / 3);
        for (var b = 0; b < 3; b++)
          i[b] < 0 && (i[b] += 1),
            i[b] > 1 && (i[b] -= 1),
            6 * i[b] < 1
              ? (l[b] = s + 6 * (h - s) * i[b])
              : 2 * i[b] < 1
              ? (l[b] = h)
              : 3 * i[b] < 2
              ? (l[b] = s + (h - s) * (2 / 3 - i[b]) * 6)
              : (l[b] = s);
        (t = (r = [z(255 * l[0]), z(255 * l[1]), z(255 * l[2])])[0]),
          (a = r[1]),
          (f = r[2]);
      }
      return e.length > 3 ? [t, a, f, e[3]] : [t, a, f, 1];
    },
    U = X,
    V = h,
    W = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,
    K = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,
    Z =
      /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,
    H =
      /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,
    J =
      /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,
    Q =
      /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,
    rr = Math.round,
    er = function (r) {
      var e;
      if (((r = r.toLowerCase().trim()), V.format.named))
        try {
          return V.format.named(r);
        } catch (r) {}
      if ((e = r.match(W))) {
        for (var n = e.slice(1, 4), t = 0; t < 3; t++) n[t] = +n[t];
        return (n[3] = 1), n;
      }
      if ((e = r.match(K))) {
        for (var a = e.slice(1, 5), f = 0; f < 4; f++) a[f] = +a[f];
        return a;
      }
      if ((e = r.match(Z))) {
        for (var o = e.slice(1, 4), u = 0; u < 3; u++) o[u] = rr(2.55 * o[u]);
        return (o[3] = 1), o;
      }
      if ((e = r.match(H))) {
        for (var c = e.slice(1, 5), i = 0; i < 3; i++) c[i] = rr(2.55 * c[i]);
        return (c[3] = +c[3]), c;
      }
      if ((e = r.match(J))) {
        var l = e.slice(1, 4);
        (l[1] *= 0.01), (l[2] *= 0.01);
        var h = U(l);
        return (h[3] = 1), h;
      }
      if ((e = r.match(Q))) {
        var s = e.slice(1, 4);
        (s[1] *= 0.01), (s[2] *= 0.01);
        var d = U(s);
        return (d[3] = +e[4]), d;
      }
    };
  er.test = function (r) {
    return (
      W.test(r) || K.test(r) || Z.test(r) || H.test(r) || J.test(r) || Q.test(r)
    );
  };
  var nr = y,
    tr = v,
    ar = h,
    fr = l.type,
    or = T,
    ur = er;
  (tr.prototype.css = function (r) {
    return or(this._rgb, r);
  }),
    (nr.css = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        tr,
        [null].concat(r, ["css"])
      ))();
    }),
    (ar.format.css = ur),
    ar.autodetect.push({
      p: 5,
      test: function (r) {
        for (var e = [], n = arguments.length - 1; n-- > 0; )
          e[n] = arguments[n + 1];
        if (!e.length && "string" === fr(r) && ur.test(r)) return "css";
      },
    });
  var cr = v,
    ir = y,
    lr = l.unpack;
  (h.format.gl = function () {
    for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
    var n = lr(r, "rgba");
    return (n[0] *= 255), (n[1] *= 255), (n[2] *= 255), n;
  }),
    (ir.gl = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        cr,
        [null].concat(r, ["gl"])
      ))();
    }),
    (cr.prototype.gl = function () {
      var r = this._rgb;
      return [r[0] / 255, r[1] / 255, r[2] / 255, r[3]];
    });
  var hr = l.unpack,
    sr = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n,
        t = hr(r, "rgb"),
        a = t[0],
        f = t[1],
        o = t[2],
        u = Math.min(a, f, o),
        c = Math.max(a, f, o),
        i = c - u,
        l = (100 * i) / 255,
        h = (u / (255 - i)) * 100;
      return (
        0 === i
          ? (n = Number.NaN)
          : (a === c && (n = (f - o) / i),
            f === c && (n = 2 + (o - a) / i),
            o === c && (n = 4 + (a - f) / i),
            (n *= 60) < 0 && (n += 360)),
        [n, l, h]
      );
    },
    dr = l.unpack,
    br = Math.floor,
    pr = function () {
      for (var r, e, n, t, a, f, o = [], u = arguments.length; u--; )
        o[u] = arguments[u];
      var c,
        i,
        l,
        h = (o = dr(o, "hcg"))[0],
        s = o[1],
        d = o[2];
      d *= 255;
      var b = 255 * s;
      if (0 === s) c = i = l = d;
      else {
        360 === h && (h = 0), h > 360 && (h -= 360), h < 0 && (h += 360);
        var p = br((h /= 60)),
          g = h - p,
          v = d * (1 - s),
          m = v + b * (1 - g),
          y = v + b * g,
          k = v + b;
        switch (p) {
          case 0:
            (c = (r = [k, y, v])[0]), (i = r[1]), (l = r[2]);
            break;
          case 1:
            (c = (e = [m, k, v])[0]), (i = e[1]), (l = e[2]);
            break;
          case 2:
            (c = (n = [v, k, y])[0]), (i = n[1]), (l = n[2]);
            break;
          case 3:
            (c = (t = [v, m, k])[0]), (i = t[1]), (l = t[2]);
            break;
          case 4:
            (c = (a = [y, v, k])[0]), (i = a[1]), (l = a[2]);
            break;
          case 5:
            (c = (f = [k, v, m])[0]), (i = f[1]), (l = f[2]);
        }
      }
      return [c, i, l, o.length > 3 ? o[3] : 1];
    },
    gr = l.unpack,
    vr = l.type,
    mr = y,
    yr = v,
    kr = h,
    wr = sr;
  (yr.prototype.hcg = function () {
    return wr(this._rgb);
  }),
    (mr.hcg = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        yr,
        [null].concat(r, ["hcg"])
      ))();
    }),
    (kr.format.hcg = pr),
    kr.autodetect.push({
      p: 1,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (((r = gr(r, "hcg")), "array" === vr(r) && 3 === r.length))
          return "hcg";
      },
    });
  var Mr = l.unpack,
    Nr = l.last,
    _r = Math.round,
    xr = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = Mr(r, "rgba"),
        t = n[0],
        a = n[1],
        f = n[2],
        o = n[3],
        u = Nr(r) || "auto";
      void 0 === o && (o = 1), "auto" === u && (u = o < 1 ? "rgba" : "rgb");
      var c = ((t = _r(t)) << 16) | ((a = _r(a)) << 8) | (f = _r(f)),
        i = "000000" + c.toString(16);
      i = i.substr(i.length - 6);
      var l = "0" + _r(255 * o).toString(16);
      switch (((l = l.substr(l.length - 2)), u.toLowerCase())) {
        case "rgba":
          return "#" + i + l;
        case "argb":
          return "#" + l + i;
        default:
          return "#" + i;
      }
    },
    Ar = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,
    Er = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,
    Fr = function (r) {
      if (r.match(Ar)) {
        (4 !== r.length && 7 !== r.length) || (r = r.substr(1)),
          3 === r.length &&
            (r = (r = r.split(""))[0] + r[0] + r[1] + r[1] + r[2] + r[2]);
        var e = parseInt(r, 16);
        return [e >> 16, (e >> 8) & 255, 255 & e, 1];
      }
      if (r.match(Er)) {
        (5 !== r.length && 9 !== r.length) || (r = r.substr(1)),
          4 === r.length &&
            (r =
              (r = r.split(""))[0] +
              r[0] +
              r[1] +
              r[1] +
              r[2] +
              r[2] +
              r[3] +
              r[3]);
        var n = parseInt(r, 16);
        return [
          (n >> 24) & 255,
          (n >> 16) & 255,
          (n >> 8) & 255,
          Math.round(((255 & n) / 255) * 100) / 100,
        ];
      }
      throw new Error("unknown hex color: " + r);
    },
    Pr = y,
    Or = v,
    jr = l.type,
    Gr = h,
    Rr = xr;
  (Or.prototype.hex = function (r) {
    return Rr(this._rgb, r);
  }),
    (Pr.hex = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        Or,
        [null].concat(r, ["hex"])
      ))();
    }),
    (Gr.format.hex = Fr),
    Gr.autodetect.push({
      p: 4,
      test: function (r) {
        for (var e = [], n = arguments.length - 1; n-- > 0; )
          e[n] = arguments[n + 1];
        if (
          !e.length &&
          "string" === jr(r) &&
          [3, 4, 5, 6, 7, 8, 9].indexOf(r.length) >= 0
        )
          return "hex";
      },
    });
  var qr = l.unpack,
    Lr = l.TWOPI,
    Ir = Math.min,
    Br = Math.sqrt,
    Cr = Math.acos,
    Dr = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n,
        t = qr(r, "rgb"),
        a = t[0],
        f = t[1],
        o = t[2],
        u = Ir((a /= 255), (f /= 255), (o /= 255)),
        c = (a + f + o) / 3,
        i = c > 0 ? 1 - u / c : 0;
      return (
        0 === i
          ? (n = NaN)
          : ((n = (a - f + (a - o)) / 2),
            (n /= Br((a - f) * (a - f) + (a - o) * (f - o))),
            (n = Cr(n)),
            o > f && (n = Lr - n),
            (n /= Lr)),
        [360 * n, i, c]
      );
    },
    Yr = l.unpack,
    Sr = l.limit,
    Tr = l.TWOPI,
    $r = l.PITHIRD,
    zr = Math.cos,
    Xr = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n,
        t,
        a,
        f = (r = Yr(r, "hsi"))[0],
        o = r[1],
        u = r[2];
      return (
        isNaN(f) && (f = 0),
        isNaN(o) && (o = 0),
        f > 360 && (f -= 360),
        f < 0 && (f += 360),
        (f /= 360) < 1 / 3
          ? (t =
              1 -
              ((a = (1 - o) / 3) +
                (n = (1 + (o * zr(Tr * f)) / zr($r - Tr * f)) / 3)))
          : f < 2 / 3
          ? (a =
              1 -
              ((n = (1 - o) / 3) +
                (t = (1 + (o * zr(Tr * (f -= 1 / 3))) / zr($r - Tr * f)) / 3)))
          : (n =
              1 -
              ((t = (1 - o) / 3) +
                (a = (1 + (o * zr(Tr * (f -= 2 / 3))) / zr($r - Tr * f)) / 3))),
        [
          255 * (n = Sr(u * n * 3)),
          255 * (t = Sr(u * t * 3)),
          255 * (a = Sr(u * a * 3)),
          r.length > 3 ? r[3] : 1,
        ]
      );
    },
    Ur = l.unpack,
    Vr = l.type,
    Wr = y,
    Kr = v,
    Zr = h,
    Hr = Dr;
  (Kr.prototype.hsi = function () {
    return Hr(this._rgb);
  }),
    (Wr.hsi = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        Kr,
        [null].concat(r, ["hsi"])
      ))();
    }),
    (Zr.format.hsi = Xr),
    Zr.autodetect.push({
      p: 2,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (((r = Ur(r, "hsi")), "array" === Vr(r) && 3 === r.length))
          return "hsi";
      },
    });
  var Jr = l.unpack,
    Qr = l.type,
    re = y,
    ee = v,
    ne = h,
    te = I;
  (ee.prototype.hsl = function () {
    return te(this._rgb);
  }),
    (re.hsl = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        ee,
        [null].concat(r, ["hsl"])
      ))();
    }),
    (ne.format.hsl = X),
    ne.autodetect.push({
      p: 2,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (((r = Jr(r, "hsl")), "array" === Qr(r) && 3 === r.length))
          return "hsl";
      },
    });
  var ae = l.unpack,
    fe = Math.min,
    oe = Math.max,
    ue = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n,
        t,
        a,
        f = (r = ae(r, "rgb"))[0],
        o = r[1],
        u = r[2],
        c = fe(f, o, u),
        i = oe(f, o, u),
        l = i - c;
      return (
        (a = i / 255),
        0 === i
          ? ((n = Number.NaN), (t = 0))
          : ((t = l / i),
            f === i && (n = (o - u) / l),
            o === i && (n = 2 + (u - f) / l),
            u === i && (n = 4 + (f - o) / l),
            (n *= 60) < 0 && (n += 360)),
        [n, t, a]
      );
    },
    ce = l.unpack,
    ie = Math.floor,
    le = function () {
      for (var r, e, n, t, a, f, o = [], u = arguments.length; u--; )
        o[u] = arguments[u];
      var c,
        i,
        l,
        h = (o = ce(o, "hsv"))[0],
        s = o[1],
        d = o[2];
      if (((d *= 255), 0 === s)) c = i = l = d;
      else {
        360 === h && (h = 0), h > 360 && (h -= 360), h < 0 && (h += 360);
        var b = ie((h /= 60)),
          p = h - b,
          g = d * (1 - s),
          v = d * (1 - s * p),
          m = d * (1 - s * (1 - p));
        switch (b) {
          case 0:
            (c = (r = [d, m, g])[0]), (i = r[1]), (l = r[2]);
            break;
          case 1:
            (c = (e = [v, d, g])[0]), (i = e[1]), (l = e[2]);
            break;
          case 2:
            (c = (n = [g, d, m])[0]), (i = n[1]), (l = n[2]);
            break;
          case 3:
            (c = (t = [g, v, d])[0]), (i = t[1]), (l = t[2]);
            break;
          case 4:
            (c = (a = [m, g, d])[0]), (i = a[1]), (l = a[2]);
            break;
          case 5:
            (c = (f = [d, g, v])[0]), (i = f[1]), (l = f[2]);
        }
      }
      return [c, i, l, o.length > 3 ? o[3] : 1];
    },
    he = l.unpack,
    se = l.type,
    de = y,
    be = v,
    pe = h,
    ge = ue;
  (be.prototype.hsv = function () {
    return ge(this._rgb);
  }),
    (de.hsv = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        be,
        [null].concat(r, ["hsv"])
      ))();
    }),
    (pe.format.hsv = le),
    pe.autodetect.push({
      p: 2,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (((r = he(r, "hsv")), "array" === se(r) && 3 === r.length))
          return "hsv";
      },
    });
  var ve = {
      Kn: 18,
      Xn: 0.95047,
      Yn: 1,
      Zn: 1.08883,
      t0: 0.137931034,
      t1: 0.206896552,
      t2: 0.12841855,
      t3: 0.008856452,
    },
    me = ve,
    ye = l.unpack,
    ke = Math.pow,
    we = function (r) {
      return (r /= 255) <= 0.04045 ? r / 12.92 : ke((r + 0.055) / 1.055, 2.4);
    },
    Me = function (r) {
      return r > me.t3 ? ke(r, 1 / 3) : r / me.t2 + me.t0;
    },
    Ne = function (r, e, n) {
      return (
        (r = we(r)),
        (e = we(e)),
        (n = we(n)),
        [
          Me((0.4124564 * r + 0.3575761 * e + 0.1804375 * n) / me.Xn),
          Me((0.2126729 * r + 0.7151522 * e + 0.072175 * n) / me.Yn),
          Me((0.0193339 * r + 0.119192 * e + 0.9503041 * n) / me.Zn),
        ]
      );
    },
    _e = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = ye(r, "rgb"),
        t = n[0],
        a = n[1],
        f = n[2],
        o = Ne(t, a, f),
        u = o[0],
        c = o[1],
        i = o[2],
        l = 116 * c - 16;
      return [l < 0 ? 0 : l, 500 * (u - c), 200 * (c - i)];
    },
    xe = ve,
    Ae = l.unpack,
    Ee = Math.pow,
    Fe = function (r) {
      return 255 * (r <= 0.00304 ? 12.92 * r : 1.055 * Ee(r, 1 / 2.4) - 0.055);
    },
    Pe = function (r) {
      return r > xe.t1 ? r * r * r : xe.t2 * (r - xe.t0);
    },
    Oe = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n,
        t,
        a,
        f = (r = Ae(r, "lab"))[0],
        o = r[1],
        u = r[2];
      return (
        (t = (f + 16) / 116),
        (n = isNaN(o) ? t : t + o / 500),
        (a = isNaN(u) ? t : t - u / 200),
        (t = xe.Yn * Pe(t)),
        (n = xe.Xn * Pe(n)),
        (a = xe.Zn * Pe(a)),
        [
          Fe(3.2404542 * n - 1.5371385 * t - 0.4985314 * a),
          Fe(-0.969266 * n + 1.8760108 * t + 0.041556 * a),
          Fe(0.0556434 * n - 0.2040259 * t + 1.0572252 * a),
          r.length > 3 ? r[3] : 1,
        ]
      );
    },
    je = l.unpack,
    Ge = l.type,
    Re = y,
    qe = v,
    Le = h,
    Ie = _e;
  (qe.prototype.lab = function () {
    return Ie(this._rgb);
  }),
    (Re.lab = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        qe,
        [null].concat(r, ["lab"])
      ))();
    }),
    (Le.format.lab = Oe),
    Le.autodetect.push({
      p: 2,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (((r = je(r, "lab")), "array" === Ge(r) && 3 === r.length))
          return "lab";
      },
    });
  var Be = l.unpack,
    Ce = l.RAD2DEG,
    De = Math.sqrt,
    Ye = Math.atan2,
    Se = Math.round,
    Te = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = Be(r, "lab"),
        t = n[0],
        a = n[1],
        f = n[2],
        o = De(a * a + f * f),
        u = (Ye(f, a) * Ce + 360) % 360;
      return 0 === Se(1e4 * o) && (u = Number.NaN), [t, o, u];
    },
    $e = l.unpack,
    ze = _e,
    Xe = Te,
    Ue = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = $e(r, "rgb"),
        t = n[0],
        a = n[1],
        f = n[2],
        o = ze(t, a, f),
        u = o[0],
        c = o[1],
        i = o[2];
      return Xe(u, c, i);
    },
    Ve = l.unpack,
    We = l.DEG2RAD,
    Ke = Math.sin,
    Ze = Math.cos,
    He = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = Ve(r, "lch"),
        t = n[0],
        a = n[1],
        f = n[2];
      return isNaN(f) && (f = 0), [t, Ze((f *= We)) * a, Ke(f) * a];
    },
    Je = l.unpack,
    Qe = He,
    rn = Oe,
    en = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = (r = Je(r, "lch"))[0],
        t = r[1],
        a = r[2],
        f = Qe(n, t, a),
        o = f[0],
        u = f[1],
        c = f[2],
        i = rn(o, u, c),
        l = i[0],
        h = i[1],
        s = i[2];
      return [l, h, s, r.length > 3 ? r[3] : 1];
    },
    nn = l.unpack,
    tn = en,
    an = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = nn(r, "hcl").reverse();
      return tn.apply(void 0, n);
    },
    fn = l.unpack,
    on = l.type,
    un = y,
    cn = v,
    ln = h,
    hn = Ue;
  (cn.prototype.lch = function () {
    return hn(this._rgb);
  }),
    (cn.prototype.hcl = function () {
      return hn(this._rgb).reverse();
    }),
    (un.lch = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        cn,
        [null].concat(r, ["lch"])
      ))();
    }),
    (un.hcl = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        cn,
        [null].concat(r, ["hcl"])
      ))();
    }),
    (ln.format.lch = en),
    (ln.format.hcl = an),
    ["lch", "hcl"].forEach(function (r) {
      return ln.autodetect.push({
        p: 2,
        test: function () {
          for (var e = [], n = arguments.length; n--; ) e[n] = arguments[n];
          if (((e = fn(e, r)), "array" === on(e) && 3 === e.length)) return r;
        },
      });
    });
  var sn = {
      aliceblue: "#f0f8ff",
      antiquewhite: "#faebd7",
      aqua: "#00ffff",
      aquamarine: "#7fffd4",
      azure: "#f0ffff",
      beige: "#f5f5dc",
      bisque: "#ffe4c4",
      black: "#000000",
      blanchedalmond: "#ffebcd",
      blue: "#0000ff",
      blueviolet: "#8a2be2",
      brown: "#a52a2a",
      burlywood: "#deb887",
      cadetblue: "#5f9ea0",
      chartreuse: "#7fff00",
      chocolate: "#d2691e",
      coral: "#ff7f50",
      cornflower: "#6495ed",
      cornflowerblue: "#6495ed",
      cornsilk: "#fff8dc",
      crimson: "#dc143c",
      cyan: "#00ffff",
      darkblue: "#00008b",
      darkcyan: "#008b8b",
      darkgoldenrod: "#b8860b",
      darkgray: "#a9a9a9",
      darkgreen: "#006400",
      darkgrey: "#a9a9a9",
      darkkhaki: "#bdb76b",
      darkmagenta: "#8b008b",
      darkolivegreen: "#556b2f",
      darkorange: "#ff8c00",
      darkorchid: "#9932cc",
      darkred: "#8b0000",
      darksalmon: "#e9967a",
      darkseagreen: "#8fbc8f",
      darkslateblue: "#483d8b",
      darkslategray: "#2f4f4f",
      darkslategrey: "#2f4f4f",
      darkturquoise: "#00ced1",
      darkviolet: "#9400d3",
      deeppink: "#ff1493",
      deepskyblue: "#00bfff",
      dimgray: "#696969",
      dimgrey: "#696969",
      dodgerblue: "#1e90ff",
      firebrick: "#b22222",
      floralwhite: "#fffaf0",
      forestgreen: "#228b22",
      fuchsia: "#ff00ff",
      gainsboro: "#dcdcdc",
      ghostwhite: "#f8f8ff",
      gold: "#ffd700",
      goldenrod: "#daa520",
      gray: "#808080",
      green: "#008000",
      greenyellow: "#adff2f",
      grey: "#808080",
      honeydew: "#f0fff0",
      hotpink: "#ff69b4",
      indianred: "#cd5c5c",
      indigo: "#4b0082",
      ivory: "#fffff0",
      khaki: "#f0e68c",
      laserlemon: "#ffff54",
      lavender: "#e6e6fa",
      lavenderblush: "#fff0f5",
      lawngreen: "#7cfc00",
      lemonchiffon: "#fffacd",
      lightblue: "#add8e6",
      lightcoral: "#f08080",
      lightcyan: "#e0ffff",
      lightgoldenrod: "#fafad2",
      lightgoldenrodyellow: "#fafad2",
      lightgray: "#d3d3d3",
      lightgreen: "#90ee90",
      lightgrey: "#d3d3d3",
      lightpink: "#ffb6c1",
      lightsalmon: "#ffa07a",
      lightseagreen: "#20b2aa",
      lightskyblue: "#87cefa",
      lightslategray: "#778899",
      lightslategrey: "#778899",
      lightsteelblue: "#b0c4de",
      lightyellow: "#ffffe0",
      lime: "#00ff00",
      limegreen: "#32cd32",
      linen: "#faf0e6",
      magenta: "#ff00ff",
      maroon: "#800000",
      maroon2: "#7f0000",
      maroon3: "#b03060",
      mediumaquamarine: "#66cdaa",
      mediumblue: "#0000cd",
      mediumorchid: "#ba55d3",
      mediumpurple: "#9370db",
      mediumseagreen: "#3cb371",
      mediumslateblue: "#7b68ee",
      mediumspringgreen: "#00fa9a",
      mediumturquoise: "#48d1cc",
      mediumvioletred: "#c71585",
      midnightblue: "#191970",
      mintcream: "#f5fffa",
      mistyrose: "#ffe4e1",
      moccasin: "#ffe4b5",
      navajowhite: "#ffdead",
      navy: "#000080",
      oldlace: "#fdf5e6",
      olive: "#808000",
      olivedrab: "#6b8e23",
      orange: "#ffa500",
      orangered: "#ff4500",
      orchid: "#da70d6",
      palegoldenrod: "#eee8aa",
      palegreen: "#98fb98",
      paleturquoise: "#afeeee",
      palevioletred: "#db7093",
      papayawhip: "#ffefd5",
      peachpuff: "#ffdab9",
      peru: "#cd853f",
      pink: "#ffc0cb",
      plum: "#dda0dd",
      powderblue: "#b0e0e6",
      purple: "#800080",
      purple2: "#7f007f",
      purple3: "#a020f0",
      rebeccapurple: "#663399",
      red: "#ff0000",
      rosybrown: "#bc8f8f",
      royalblue: "#4169e1",
      saddlebrown: "#8b4513",
      salmon: "#fa8072",
      sandybrown: "#f4a460",
      seagreen: "#2e8b57",
      seashell: "#fff5ee",
      sienna: "#a0522d",
      silver: "#c0c0c0",
      skyblue: "#87ceeb",
      slateblue: "#6a5acd",
      slategray: "#708090",
      slategrey: "#708090",
      snow: "#fffafa",
      springgreen: "#00ff7f",
      steelblue: "#4682b4",
      tan: "#d2b48c",
      teal: "#008080",
      thistle: "#d8bfd8",
      tomato: "#ff6347",
      turquoise: "#40e0d0",
      violet: "#ee82ee",
      wheat: "#f5deb3",
      white: "#ffffff",
      whitesmoke: "#f5f5f5",
      yellow: "#ffff00",
      yellowgreen: "#9acd32",
    },
    dn = h,
    bn = l.type,
    pn = sn,
    gn = Fr,
    vn = xr;
  (v.prototype.name = function () {
    for (
      var r = vn(this._rgb, "rgb"), e = 0, n = Object.keys(pn);
      e < n.length;
      e += 1
    ) {
      var t = n[e];
      if (pn[t] === r) return t.toLowerCase();
    }
    return r;
  }),
    (dn.format.named = function (r) {
      if (((r = r.toLowerCase()), pn[r])) return gn(pn[r]);
      throw new Error("unknown color name: " + r);
    }),
    dn.autodetect.push({
      p: 5,
      test: function (r) {
        for (var e = [], n = arguments.length - 1; n-- > 0; )
          e[n] = arguments[n + 1];
        if (!e.length && "string" === bn(r) && pn[r.toLowerCase()])
          return "named";
      },
    });
  var mn = l.unpack,
    yn = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = mn(r, "rgb"),
        t = n[0],
        a = n[1],
        f = n[2];
      return (t << 16) + (a << 8) + f;
    },
    kn = l.type,
    wn = function (r) {
      if ("number" == kn(r) && r >= 0 && r <= 16777215)
        return [r >> 16, (r >> 8) & 255, 255 & r, 1];
      throw new Error("unknown num color: " + r);
    },
    Mn = y,
    Nn = v,
    _n = h,
    xn = l.type,
    An = yn;
  (Nn.prototype.num = function () {
    return An(this._rgb);
  }),
    (Mn.num = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        Nn,
        [null].concat(r, ["num"])
      ))();
    }),
    (_n.format.num = wn),
    _n.autodetect.push({
      p: 5,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (
          1 === r.length &&
          "number" === xn(r[0]) &&
          r[0] >= 0 &&
          r[0] <= 16777215
        )
          return "num";
      },
    });
  var En = y,
    Fn = v,
    Pn = h,
    On = l.unpack,
    jn = l.type,
    Gn = Math.round;
  (Fn.prototype.rgb = function (r) {
    return (
      void 0 === r && (r = !0),
      !1 === r ? this._rgb.slice(0, 3) : this._rgb.slice(0, 3).map(Gn)
    );
  }),
    (Fn.prototype.rgba = function (r) {
      return (
        void 0 === r && (r = !0),
        this._rgb.slice(0, 4).map(function (e, n) {
          return n < 3 ? (!1 === r ? e : Gn(e)) : e;
        })
      );
    }),
    (En.rgb = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        Fn,
        [null].concat(r, ["rgb"])
      ))();
    }),
    (Pn.format.rgb = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = On(r, "rgba");
      return void 0 === n[3] && (n[3] = 1), n;
    }),
    Pn.autodetect.push({
      p: 3,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (
          ((r = On(r, "rgba")),
          "array" === jn(r) &&
            (3 === r.length ||
              (4 === r.length &&
                "number" == jn(r[3]) &&
                r[3] >= 0 &&
                r[3] <= 1)))
        )
          return "rgb";
      },
    });
  var Rn = Math.log,
    qn = function (r) {
      var e,
        n,
        t,
        a = r / 100;
      return (
        a < 66
          ? ((e = 255),
            (n =
              a < 6
                ? 0
                : -155.25485562709179 -
                  0.44596950469579133 * (n = a - 2) +
                  104.49216199393888 * Rn(n)),
            (t =
              a < 20
                ? 0
                : 0.8274096064007395 * (t = a - 10) -
                  254.76935184120902 +
                  115.67994401066147 * Rn(t)))
          : ((e =
              351.97690566805693 +
              0.114206453784165 * (e = a - 55) -
              40.25366309332127 * Rn(e)),
            (n =
              325.4494125711974 +
              0.07943456536662342 * (n = a - 50) -
              28.0852963507957 * Rn(n)),
            (t = 255)),
        [e, n, t, 1]
      );
    },
    Ln = qn,
    In = l.unpack,
    Bn = Math.round,
    Cn = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      for (
        var n, t = In(r, "rgb"), a = t[0], f = t[2], o = 1e3, u = 4e4, c = 0.4;
        u - o > c;

      ) {
        var i = Ln((n = 0.5 * (u + o)));
        i[2] / i[0] >= f / a ? (u = n) : (o = n);
      }
      return Bn(n);
    },
    Dn = y,
    Yn = v,
    Sn = h,
    Tn = Cn;
  (Yn.prototype.temp =
    Yn.prototype.kelvin =
    Yn.prototype.temperature =
      function () {
        return Tn(this._rgb);
      }),
    (Dn.temp =
      Dn.kelvin =
      Dn.temperature =
        function () {
          for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
          return new (Function.prototype.bind.apply(
            Yn,
            [null].concat(r, ["temp"])
          ))();
        }),
    (Sn.format.temp = Sn.format.kelvin = Sn.format.temperature = qn);
  var $n = l.unpack,
    zn = Math.cbrt,
    Xn = Math.pow,
    Un = Math.sign,
    Vn = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = $n(r, "rgb"),
        t = n[0],
        a = n[1],
        f = n[2],
        o = [Wn(t / 255), Wn(a / 255), Wn(f / 255)],
        u = o[0],
        c = o[1],
        i = o[2],
        l = zn(0.4122214708 * u + 0.5363325363 * c + 0.0514459929 * i),
        h = zn(0.2119034982 * u + 0.6806995451 * c + 0.1073969566 * i),
        s = zn(0.0883024619 * u + 0.2817188376 * c + 0.6299787005 * i);
      return [
        0.2104542553 * l + 0.793617785 * h - 0.0040720468 * s,
        1.9779984951 * l - 2.428592205 * h + 0.4505937099 * s,
        0.0259040371 * l + 0.7827717662 * h - 0.808675766 * s,
      ];
    };
  function Wn(r) {
    var e = Math.abs(r);
    return e < 0.04045
      ? r / 12.92
      : (Un(r) || 1) * Xn((e + 0.055) / 1.055, 2.4);
  }
  var Kn = l.unpack,
    Zn = Math.pow,
    Hn = Math.sign,
    Jn = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = (r = Kn(r, "lab"))[0],
        t = r[1],
        a = r[2],
        f = Zn(n + 0.3963377774 * t + 0.2158037573 * a, 3),
        o = Zn(n - 0.1055613458 * t - 0.0638541728 * a, 3),
        u = Zn(n - 0.0894841775 * t - 1.291485548 * a, 3);
      return [
        255 * Qn(4.0767416621 * f - 3.3077115913 * o + 0.2309699292 * u),
        255 * Qn(-1.2684380046 * f + 2.6097574011 * o - 0.3413193965 * u),
        255 * Qn(-0.0041960863 * f - 0.7034186147 * o + 1.707614701 * u),
        r.length > 3 ? r[3] : 1,
      ];
    };
  function Qn(r) {
    var e = Math.abs(r);
    return e > 0.0031308
      ? (Hn(r) || 1) * (1.055 * Zn(e, 1 / 2.4) - 0.055)
      : 12.92 * r;
  }
  var rt = l.unpack,
    et = l.type,
    nt = y,
    tt = v,
    at = h,
    ft = Vn;
  (tt.prototype.oklab = function () {
    return ft(this._rgb);
  }),
    (nt.oklab = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        tt,
        [null].concat(r, ["oklab"])
      ))();
    }),
    (at.format.oklab = Jn),
    at.autodetect.push({
      p: 3,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (((r = rt(r, "oklab")), "array" === et(r) && 3 === r.length))
          return "oklab";
      },
    });
  var ot = l.unpack,
    ut = Vn,
    ct = Te,
    it = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = ot(r, "rgb"),
        t = n[0],
        a = n[1],
        f = n[2],
        o = ut(t, a, f),
        u = o[0],
        c = o[1],
        i = o[2];
      return ct(u, c, i);
    },
    lt = l.unpack,
    ht = He,
    st = Jn,
    dt = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      var n = (r = lt(r, "lch"))[0],
        t = r[1],
        a = r[2],
        f = ht(n, t, a),
        o = f[0],
        u = f[1],
        c = f[2],
        i = st(o, u, c),
        l = i[0],
        h = i[1],
        s = i[2];
      return [l, h, s, r.length > 3 ? r[3] : 1];
    },
    bt = l.unpack,
    pt = l.type,
    gt = y,
    vt = v,
    mt = h,
    yt = it;
  (vt.prototype.oklch = function () {
    return yt(this._rgb);
  }),
    (gt.oklch = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      return new (Function.prototype.bind.apply(
        vt,
        [null].concat(r, ["oklch"])
      ))();
    }),
    (mt.format.oklch = dt),
    mt.autodetect.push({
      p: 3,
      test: function () {
        for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
        if (((r = bt(r, "oklch")), "array" === pt(r) && 3 === r.length))
          return "oklch";
      },
    });
  var kt = v,
    wt = l.type;
  (kt.prototype.alpha = function (r, e) {
    return (
      void 0 === e && (e = !1),
      void 0 !== r && "number" === wt(r)
        ? e
          ? ((this._rgb[3] = r), this)
          : new kt([this._rgb[0], this._rgb[1], this._rgb[2], r], "rgb")
        : this._rgb[3]
    );
  }),
    (v.prototype.clipped = function () {
      return this._rgb._clipped || !1;
    });
  var Mt = v,
    Nt = ve;
  (Mt.prototype.darken = function (r) {
    void 0 === r && (r = 1);
    var e = this.lab();
    return (e[0] -= Nt.Kn * r), new Mt(e, "lab").alpha(this.alpha(), !0);
  }),
    (Mt.prototype.brighten = function (r) {
      return void 0 === r && (r = 1), this.darken(-r);
    }),
    (Mt.prototype.darker = Mt.prototype.darken),
    (Mt.prototype.brighter = Mt.prototype.brighten),
    (v.prototype.get = function (r) {
      var e = r.split("."),
        n = e[0],
        t = e[1],
        a = this[n]();
      if (t) {
        var f = n.indexOf(t) - ("ok" === n.substr(0, 2) ? 2 : 0);
        if (f > -1) return a[f];
        throw new Error("unknown channel " + t + " in mode " + n);
      }
      return a;
    });
  var _t = v,
    xt = l.type,
    At = Math.pow;
  _t.prototype.luminance = function (r) {
    if (void 0 !== r && "number" === xt(r)) {
      if (0 === r) return new _t([0, 0, 0, this._rgb[3]], "rgb");
      if (1 === r) return new _t([255, 255, 255, this._rgb[3]], "rgb");
      var e = this.luminance(),
        n = 20,
        t = function (e, a) {
          var f = e.interpolate(a, 0.5, "rgb"),
            o = f.luminance();
          return Math.abs(r - o) < 1e-7 || !n-- ? f : o > r ? t(e, f) : t(f, a);
        },
        a = (
          e > r ? t(new _t([0, 0, 0]), this) : t(this, new _t([255, 255, 255]))
        ).rgb();
      return new _t(a.concat([this._rgb[3]]));
    }
    return Et.apply(void 0, this._rgb.slice(0, 3));
  };
  var Et = function (r, e, n) {
      return 0.2126 * (r = Ft(r)) + 0.7152 * (e = Ft(e)) + 0.0722 * (n = Ft(n));
    },
    Ft = function (r) {
      return (r /= 255) <= 0.03928 ? r / 12.92 : At((r + 0.055) / 1.055, 2.4);
    },
    Pt = {},
    Ot = v,
    jt = l.type,
    Gt = Pt,
    Rt = function (r, e, n) {
      void 0 === n && (n = 0.5);
      for (var t = [], a = arguments.length - 3; a-- > 0; )
        t[a] = arguments[a + 3];
      var f = t[0] || "lrgb";
      if ((Gt[f] || t.length || (f = Object.keys(Gt)[0]), !Gt[f]))
        throw new Error("interpolation mode " + f + " is not defined");
      return (
        "object" !== jt(r) && (r = new Ot(r)),
        "object" !== jt(e) && (e = new Ot(e)),
        Gt[f](r, e, n).alpha(r.alpha() + n * (e.alpha() - r.alpha()))
      );
    },
    qt = v,
    Lt = Rt;
  qt.prototype.mix = qt.prototype.interpolate = function (r, e) {
    void 0 === e && (e = 0.5);
    for (var n = [], t = arguments.length - 2; t-- > 0; )
      n[t] = arguments[t + 2];
    return Lt.apply(void 0, [this, r, e].concat(n));
  };
  var It = v;
  It.prototype.premultiply = function (r) {
    void 0 === r && (r = !1);
    var e = this._rgb,
      n = e[3];
    return r
      ? ((this._rgb = [e[0] * n, e[1] * n, e[2] * n, n]), this)
      : new It([e[0] * n, e[1] * n, e[2] * n, n], "rgb");
  };
  var Bt = v,
    Ct = ve;
  (Bt.prototype.saturate = function (r) {
    void 0 === r && (r = 1);
    var e = this.lch();
    return (
      (e[1] += Ct.Kn * r),
      e[1] < 0 && (e[1] = 0),
      new Bt(e, "lch").alpha(this.alpha(), !0)
    );
  }),
    (Bt.prototype.desaturate = function (r) {
      return void 0 === r && (r = 1), this.saturate(-r);
    });
  var Dt = v,
    Yt = l.type;
  Dt.prototype.set = function (r, e, n) {
    void 0 === n && (n = !1);
    var t = r.split("."),
      a = t[0],
      f = t[1],
      o = this[a]();
    if (f) {
      var u = a.indexOf(f) - ("ok" === a.substr(0, 2) ? 2 : 0);
      if (u > -1) {
        if ("string" == Yt(e))
          switch (e.charAt(0)) {
            case "+":
            case "-":
              o[u] += +e;
              break;
            case "*":
              o[u] *= +e.substr(1);
              break;
            case "/":
              o[u] /= +e.substr(1);
              break;
            default:
              o[u] = +e;
          }
        else {
          if ("number" !== Yt(e))
            throw new Error("unsupported value for Color.set");
          o[u] = e;
        }
        var c = new Dt(o, a);
        return n ? ((this._rgb = c._rgb), this) : c;
      }
      throw new Error("unknown channel " + f + " in mode " + a);
    }
    return o;
  };
  var St = v;
  Pt.rgb = function (r, e, n) {
    var t = r._rgb,
      a = e._rgb;
    return new St(
      t[0] + n * (a[0] - t[0]),
      t[1] + n * (a[1] - t[1]),
      t[2] + n * (a[2] - t[2]),
      "rgb"
    );
  };
  var Tt = v,
    $t = Math.sqrt,
    zt = Math.pow;
  Pt.lrgb = function (r, e, n) {
    var t = r._rgb,
      a = t[0],
      f = t[1],
      o = t[2],
      u = e._rgb,
      c = u[0],
      i = u[1],
      l = u[2];
    return new Tt(
      $t(zt(a, 2) * (1 - n) + zt(c, 2) * n),
      $t(zt(f, 2) * (1 - n) + zt(i, 2) * n),
      $t(zt(o, 2) * (1 - n) + zt(l, 2) * n),
      "rgb"
    );
  };
  var Xt = v;
  Pt.lab = function (r, e, n) {
    var t = r.lab(),
      a = e.lab();
    return new Xt(
      t[0] + n * (a[0] - t[0]),
      t[1] + n * (a[1] - t[1]),
      t[2] + n * (a[2] - t[2]),
      "lab"
    );
  };
  var Ut = v,
    Vt = function (r, e, n, t) {
      var a, f, o, u, c, i, l, h, s, d, b, p, g;
      return (
        "hsl" === t
          ? ((o = r.hsl()), (u = e.hsl()))
          : "hsv" === t
          ? ((o = r.hsv()), (u = e.hsv()))
          : "hcg" === t
          ? ((o = r.hcg()), (u = e.hcg()))
          : "hsi" === t
          ? ((o = r.hsi()), (u = e.hsi()))
          : "lch" === t || "hcl" === t
          ? ((t = "hcl"), (o = r.hcl()), (u = e.hcl()))
          : "oklch" === t &&
            ((o = r.oklch().reverse()), (u = e.oklch().reverse())),
        ("h" !== t.substr(0, 1) && "oklch" !== t) ||
          ((c = (a = o)[0]),
          (l = a[1]),
          (s = a[2]),
          (i = (f = u)[0]),
          (h = f[1]),
          (d = f[2])),
        isNaN(c) || isNaN(i)
          ? isNaN(c)
            ? isNaN(i)
              ? (p = Number.NaN)
              : ((p = i), (1 != s && 0 != s) || "hsv" == t || (b = h))
            : ((p = c), (1 != d && 0 != d) || "hsv" == t || (b = l))
          : (p =
              c +
              n *
                (i > c && i - c > 180
                  ? i - (c + 360)
                  : i < c && c - i > 180
                  ? i + 360 - c
                  : i - c)),
        void 0 === b && (b = l + n * (h - l)),
        (g = s + n * (d - s)),
        new Ut("oklch" === t ? [g, b, p] : [p, b, g], t)
      );
    },
    Wt = Vt,
    Kt = function (r, e, n) {
      return Wt(r, e, n, "lch");
    };
  (Pt.lch = Kt), (Pt.hcl = Kt);
  var Zt = v;
  Pt.num = function (r, e, n) {
    var t = r.num(),
      a = e.num();
    return new Zt(t + n * (a - t), "num");
  };
  var Ht = Vt;
  Pt.hcg = function (r, e, n) {
    return Ht(r, e, n, "hcg");
  };
  var Jt = Vt;
  Pt.hsi = function (r, e, n) {
    return Jt(r, e, n, "hsi");
  };
  var Qt = Vt;
  Pt.hsl = function (r, e, n) {
    return Qt(r, e, n, "hsl");
  };
  var ra = Vt;
  Pt.hsv = function (r, e, n) {
    return ra(r, e, n, "hsv");
  };
  var ea = v;
  Pt.oklab = function (r, e, n) {
    var t = r.oklab(),
      a = e.oklab();
    return new ea(
      t[0] + n * (a[0] - t[0]),
      t[1] + n * (a[1] - t[1]),
      t[2] + n * (a[2] - t[2]),
      "oklab"
    );
  };
  var na = Vt;
  Pt.oklch = function (r, e, n) {
    return na(r, e, n, "oklch");
  };
  var ta = v,
    aa = l.clip_rgb,
    fa = Math.pow,
    oa = Math.sqrt,
    ua = Math.PI,
    ca = Math.cos,
    ia = Math.sin,
    la = Math.atan2,
    ha = function (r, e) {
      for (var n = r.length, t = [0, 0, 0, 0], a = 0; a < r.length; a++) {
        var f = r[a],
          o = e[a] / n,
          u = f._rgb;
        (t[0] += fa(u[0], 2) * o),
          (t[1] += fa(u[1], 2) * o),
          (t[2] += fa(u[2], 2) * o),
          (t[3] += u[3] * o);
      }
      return (
        (t[0] = oa(t[0])),
        (t[1] = oa(t[1])),
        (t[2] = oa(t[2])),
        t[3] > 0.9999999 && (t[3] = 1),
        new ta(aa(t))
      );
    },
    sa = y,
    da = l.type,
    ba = Math.pow,
    pa = function (r) {
      var e = "rgb",
        n = sa("#ccc"),
        t = 0,
        a = [0, 1],
        f = [],
        o = [0, 0],
        u = !1,
        c = [],
        i = !1,
        l = 0,
        h = 1,
        s = !1,
        d = {},
        b = !0,
        p = 1,
        g = function (r) {
          if (
            ((r = r || ["#fff", "#000"]) &&
              "string" === da(r) &&
              sa.brewer &&
              sa.brewer[r.toLowerCase()] &&
              (r = sa.brewer[r.toLowerCase()]),
            "array" === da(r))
          ) {
            1 === r.length && (r = [r[0], r[0]]), (r = r.slice(0));
            for (var e = 0; e < r.length; e++) r[e] = sa(r[e]);
            f.length = 0;
            for (var n = 0; n < r.length; n++) f.push(n / (r.length - 1));
          }
          return k(), (c = r);
        },
        v = function (r) {
          return r;
        },
        m = function (r) {
          return r;
        },
        y = function (r, t) {
          var a, i;
          if ((null == t && (t = !1), isNaN(r) || null === r)) return n;
          if (t) i = r;
          else if (u && u.length > 2) {
            var s = (function (r) {
              if (null != u) {
                for (var e = u.length - 1, n = 0; n < e && r >= u[n]; ) n++;
                return n - 1;
              }
              return 0;
            })(r);
            i = s / (u.length - 2);
          } else i = h !== l ? (r - l) / (h - l) : 1;
          (i = m(i)),
            t || (i = v(i)),
            1 !== p && (i = ba(i, p)),
            (i = o[0] + i * (1 - o[0] - o[1])),
            (i = Math.min(1, Math.max(0, i)));
          var g = Math.floor(1e4 * i);
          if (b && d[g]) a = d[g];
          else {
            if ("array" === da(c))
              for (var y = 0; y < f.length; y++) {
                var k = f[y];
                if (i <= k) {
                  a = c[y];
                  break;
                }
                if (i >= k && y === f.length - 1) {
                  a = c[y];
                  break;
                }
                if (i > k && i < f[y + 1]) {
                  (i = (i - k) / (f[y + 1] - k)),
                    (a = sa.interpolate(c[y], c[y + 1], i, e));
                  break;
                }
              }
            else "function" === da(c) && (a = c(i));
            b && (d[g] = a);
          }
          return a;
        },
        k = function () {
          return (d = {});
        };
      g(r);
      var w = function (r) {
        var e = sa(y(r));
        return i && e[i] ? e[i]() : e;
      };
      return (
        (w.classes = function (r) {
          if (null != r) {
            if ("array" === da(r)) (u = r), (a = [r[0], r[r.length - 1]]);
            else {
              var e = sa.analyze(a);
              u = 0 === r ? [e.min, e.max] : sa.limits(e, "e", r);
            }
            return w;
          }
          return u;
        }),
        (w.domain = function (r) {
          if (!arguments.length) return a;
          (l = r[0]), (h = r[r.length - 1]), (f = []);
          var e = c.length;
          if (r.length === e && l !== h)
            for (var n = 0, t = Array.from(r); n < t.length; n += 1) {
              var o = t[n];
              f.push((o - l) / (h - l));
            }
          else {
            for (var u = 0; u < e; u++) f.push(u / (e - 1));
            if (r.length > 2) {
              var i = r.map(function (e, n) {
                  return n / (r.length - 1);
                }),
                s = r.map(function (r) {
                  return (r - l) / (h - l);
                });
              s.every(function (r, e) {
                return i[e] === r;
              }) ||
                (m = function (r) {
                  if (r <= 0 || r >= 1) return r;
                  for (var e = 0; r >= s[e + 1]; ) e++;
                  var n = (r - s[e]) / (s[e + 1] - s[e]);
                  return i[e] + n * (i[e + 1] - i[e]);
                });
            }
          }
          return (a = [l, h]), w;
        }),
        (w.mode = function (r) {
          return arguments.length ? ((e = r), k(), w) : e;
        }),
        (w.range = function (r, e) {
          return g(r), w;
        }),
        (w.out = function (r) {
          return (i = r), w;
        }),
        (w.spread = function (r) {
          return arguments.length ? ((t = r), w) : t;
        }),
        (w.correctLightness = function (r) {
          return (
            null == r && (r = !0),
            (s = r),
            k(),
            (v = s
              ? function (r) {
                  for (
                    var e = y(0, !0).lab()[0],
                      n = y(1, !0).lab()[0],
                      t = e > n,
                      a = y(r, !0).lab()[0],
                      f = e + (n - e) * r,
                      o = a - f,
                      u = 0,
                      c = 1,
                      i = 20;
                    Math.abs(o) > 0.01 && i-- > 0;

                  )
                    t && (o *= -1),
                      o < 0
                        ? ((u = r), (r += 0.5 * (c - r)))
                        : ((c = r), (r += 0.5 * (u - r))),
                      (a = y(r, !0).lab()[0]),
                      (o = a - f);
                  return r;
                }
              : function (r) {
                  return r;
                }),
            w
          );
        }),
        (w.padding = function (r) {
          return null != r
            ? ("number" === da(r) && (r = [r, r]), (o = r), w)
            : o;
        }),
        (w.colors = function (e, n) {
          arguments.length < 2 && (n = "hex");
          var t = [];
          if (0 === arguments.length) t = c.slice(0);
          else if (1 === e) t = [w(0.5)];
          else if (e > 1) {
            var f = a[0],
              o = a[1] - f;
            t = ga(0, e, !1).map(function (r) {
              return w(f + (r / (e - 1)) * o);
            });
          } else {
            r = [];
            var i = [];
            if (u && u.length > 2)
              for (
                var l = 1, h = u.length, s = 1 <= h;
                s ? l < h : l > h;
                s ? l++ : l--
              )
                i.push(0.5 * (u[l - 1] + u[l]));
            else i = a;
            t = i.map(function (r) {
              return w(r);
            });
          }
          return (
            sa[n] &&
              (t = t.map(function (r) {
                return r[n]();
              })),
            t
          );
        }),
        (w.cache = function (r) {
          return null != r ? ((b = r), w) : b;
        }),
        (w.gamma = function (r) {
          return null != r ? ((p = r), w) : p;
        }),
        (w.nodata = function (r) {
          return null != r ? ((n = sa(r)), w) : n;
        }),
        w
      );
    };
  function ga(r, e, n) {
    for (
      var t = [], a = r < e, f = n ? (a ? e + 1 : e - 1) : e, o = r;
      a ? o < f : o > f;
      a ? o++ : o--
    )
      t.push(o);
    return t;
  }
  var va = v,
    ma = pa,
    ya = y,
    ka = function (r, e, n) {
      if (!ka[n]) throw new Error("unknown blend mode " + n);
      return ka[n](r, e);
    },
    wa = function (r) {
      return function (e, n) {
        var t = ya(n).rgb(),
          a = ya(e).rgb();
        return ya.rgb(r(t, a));
      };
    },
    Ma = function (r) {
      return function (e, n) {
        var t = [];
        return (
          (t[0] = r(e[0], n[0])),
          (t[1] = r(e[1], n[1])),
          (t[2] = r(e[2], n[2])),
          t
        );
      };
    };
  (ka.normal = wa(
    Ma(function (r) {
      return r;
    })
  )),
    (ka.multiply = wa(
      Ma(function (r, e) {
        return (r * e) / 255;
      })
    )),
    (ka.screen = wa(
      Ma(function (r, e) {
        return 255 * (1 - (1 - r / 255) * (1 - e / 255));
      })
    )),
    (ka.overlay = wa(
      Ma(function (r, e) {
        return e < 128
          ? (2 * r * e) / 255
          : 255 * (1 - 2 * (1 - r / 255) * (1 - e / 255));
      })
    )),
    (ka.darken = wa(
      Ma(function (r, e) {
        return r > e ? e : r;
      })
    )),
    (ka.lighten = wa(
      Ma(function (r, e) {
        return r > e ? r : e;
      })
    )),
    (ka.dodge = wa(
      Ma(function (r, e) {
        return 255 === r || (r = ((e / 255) * 255) / (1 - r / 255)) > 255
          ? 255
          : r;
      })
    )),
    (ka.burn = wa(
      Ma(function (r, e) {
        return 255 * (1 - (1 - e / 255) / (r / 255));
      })
    ));
  for (
    var Na = ka,
      _a = l.type,
      xa = l.clip_rgb,
      Aa = l.TWOPI,
      Ea = Math.pow,
      Fa = Math.sin,
      Pa = Math.cos,
      Oa = y,
      ja = v,
      Ga = Math.floor,
      Ra = Math.random,
      qa = o,
      La = Math.log,
      Ia = Math.pow,
      Ba = Math.floor,
      Ca = Math.abs,
      Da = function (r, e) {
        void 0 === e && (e = null);
        var n = {
          min: Number.MAX_VALUE,
          max: -1 * Number.MAX_VALUE,
          sum: 0,
          values: [],
          count: 0,
        };
        return (
          "object" === qa(r) && (r = Object.values(r)),
          r.forEach(function (r) {
            e && "object" === qa(r) && (r = r[e]),
              null == r ||
                isNaN(r) ||
                (n.values.push(r),
                (n.sum += r),
                r < n.min && (n.min = r),
                r > n.max && (n.max = r),
                (n.count += 1));
          }),
          (n.domain = [n.min, n.max]),
          (n.limits = function (r, e) {
            return Ya(n, r, e);
          }),
          n
        );
      },
      Ya = function (r, e, n) {
        void 0 === e && (e = "equal"),
          void 0 === n && (n = 7),
          "array" == qa(r) && (r = Da(r));
        var t = r.min,
          a = r.max,
          f = r.values.sort(function (r, e) {
            return r - e;
          });
        if (1 === n) return [t, a];
        var o = [];
        if (
          ("c" === e.substr(0, 1) && (o.push(t), o.push(a)),
          "e" === e.substr(0, 1))
        ) {
          o.push(t);
          for (var u = 1; u < n; u++) o.push(t + (u / n) * (a - t));
          o.push(a);
        } else if ("l" === e.substr(0, 1)) {
          if (t <= 0)
            throw new Error(
              "Logarithmic scales are only possible for values > 0"
            );
          var c = Math.LOG10E * La(t),
            i = Math.LOG10E * La(a);
          o.push(t);
          for (var l = 1; l < n; l++) o.push(Ia(10, c + (l / n) * (i - c)));
          o.push(a);
        } else if ("q" === e.substr(0, 1)) {
          o.push(t);
          for (var h = 1; h < n; h++) {
            var s = ((f.length - 1) * h) / n,
              d = Ba(s);
            if (d === s) o.push(f[d]);
            else {
              var b = s - d;
              o.push(f[d] * (1 - b) + f[d + 1] * b);
            }
          }
          o.push(a);
        } else if ("k" === e.substr(0, 1)) {
          var p,
            g = f.length,
            v = new Array(g),
            m = new Array(n),
            y = !0,
            k = 0,
            w = null;
          (w = []).push(t);
          for (var M = 1; M < n; M++) w.push(t + (M / n) * (a - t));
          for (w.push(a); y; ) {
            for (var N = 0; N < n; N++) m[N] = 0;
            for (var _ = 0; _ < g; _++)
              for (
                var x = f[_], A = Number.MAX_VALUE, E = void 0, F = 0;
                F < n;
                F++
              ) {
                var P = Ca(w[F] - x);
                P < A && ((A = P), (E = F)), m[E]++, (v[_] = E);
              }
            for (var O = new Array(n), j = 0; j < n; j++) O[j] = null;
            for (var G = 0; G < g; G++)
              null === O[(p = v[G])] ? (O[p] = f[G]) : (O[p] += f[G]);
            for (var R = 0; R < n; R++) O[R] *= 1 / m[R];
            y = !1;
            for (var q = 0; q < n; q++)
              if (O[q] !== w[q]) {
                y = !0;
                break;
              }
            (w = O), ++k > 200 && (y = !1);
          }
          for (var L = {}, I = 0; I < n; I++) L[I] = [];
          for (var B = 0; B < g; B++) L[(p = v[B])].push(f[B]);
          for (var C = [], D = 0; D < n; D++)
            C.push(L[D][0]), C.push(L[D][L[D].length - 1]);
          (C = C.sort(function (r, e) {
            return r - e;
          })),
            o.push(C[0]);
          for (var Y = 1; Y < C.length; Y += 2) {
            var S = C[Y];
            isNaN(S) || -1 !== o.indexOf(S) || o.push(S);
          }
        }
        return o;
      },
      Sa = { analyze: Da, limits: Ya },
      Ta = v,
      $a = v,
      za = Math.sqrt,
      Xa = Math.pow,
      Ua = Math.min,
      Va = Math.max,
      Wa = Math.atan2,
      Ka = Math.abs,
      Za = Math.cos,
      Ha = Math.sin,
      Ja = Math.exp,
      Qa = Math.PI,
      rf = v,
      ef = v,
      nf = y,
      tf = pa,
      af = {
        cool: function () {
          return tf([nf.hsl(180, 1, 0.9), nf.hsl(250, 0.7, 0.4)]);
        },
        hot: function () {
          return tf(["#000", "#f00", "#ff0", "#fff"]).mode("rgb");
        },
      },
      ff = {
        OrRd: [
          "#fff7ec",
          "#fee8c8",
          "#fdd49e",
          "#fdbb84",
          "#fc8d59",
          "#ef6548",
          "#d7301f",
          "#b30000",
          "#7f0000",
        ],
        PuBu: [
          "#fff7fb",
          "#ece7f2",
          "#d0d1e6",
          "#a6bddb",
          "#74a9cf",
          "#3690c0",
          "#0570b0",
          "#045a8d",
          "#023858",
        ],
        BuPu: [
          "#f7fcfd",
          "#e0ecf4",
          "#bfd3e6",
          "#9ebcda",
          "#8c96c6",
          "#8c6bb1",
          "#88419d",
          "#810f7c",
          "#4d004b",
        ],
        Oranges: [
          "#fff5eb",
          "#fee6ce",
          "#fdd0a2",
          "#fdae6b",
          "#fd8d3c",
          "#f16913",
          "#d94801",
          "#a63603",
          "#7f2704",
        ],
        BuGn: [
          "#f7fcfd",
          "#e5f5f9",
          "#ccece6",
          "#99d8c9",
          "#66c2a4",
          "#41ae76",
          "#238b45",
          "#006d2c",
          "#00441b",
        ],
        YlOrBr: [
          "#ffffe5",
          "#fff7bc",
          "#fee391",
          "#fec44f",
          "#fe9929",
          "#ec7014",
          "#cc4c02",
          "#993404",
          "#662506",
        ],
        YlGn: [
          "#ffffe5",
          "#f7fcb9",
          "#d9f0a3",
          "#addd8e",
          "#78c679",
          "#41ab5d",
          "#238443",
          "#006837",
          "#004529",
        ],
        Reds: [
          "#fff5f0",
          "#fee0d2",
          "#fcbba1",
          "#fc9272",
          "#fb6a4a",
          "#ef3b2c",
          "#cb181d",
          "#a50f15",
          "#67000d",
        ],
        RdPu: [
          "#fff7f3",
          "#fde0dd",
          "#fcc5c0",
          "#fa9fb5",
          "#f768a1",
          "#dd3497",
          "#ae017e",
          "#7a0177",
          "#49006a",
        ],
        Greens: [
          "#f7fcf5",
          "#e5f5e0",
          "#c7e9c0",
          "#a1d99b",
          "#74c476",
          "#41ab5d",
          "#238b45",
          "#006d2c",
          "#00441b",
        ],
        YlGnBu: [
          "#ffffd9",
          "#edf8b1",
          "#c7e9b4",
          "#7fcdbb",
          "#41b6c4",
          "#1d91c0",
          "#225ea8",
          "#253494",
          "#081d58",
        ],
        Purples: [
          "#fcfbfd",
          "#efedf5",
          "#dadaeb",
          "#bcbddc",
          "#9e9ac8",
          "#807dba",
          "#6a51a3",
          "#54278f",
          "#3f007d",
        ],
        GnBu: [
          "#f7fcf0",
          "#e0f3db",
          "#ccebc5",
          "#a8ddb5",
          "#7bccc4",
          "#4eb3d3",
          "#2b8cbe",
          "#0868ac",
          "#084081",
        ],
        Greys: [
          "#ffffff",
          "#f0f0f0",
          "#d9d9d9",
          "#bdbdbd",
          "#969696",
          "#737373",
          "#525252",
          "#252525",
          "#000000",
        ],
        YlOrRd: [
          "#ffffcc",
          "#ffeda0",
          "#fed976",
          "#feb24c",
          "#fd8d3c",
          "#fc4e2a",
          "#e31a1c",
          "#bd0026",
          "#800026",
        ],
        PuRd: [
          "#f7f4f9",
          "#e7e1ef",
          "#d4b9da",
          "#c994c7",
          "#df65b0",
          "#e7298a",
          "#ce1256",
          "#980043",
          "#67001f",
        ],
        Blues: [
          "#f7fbff",
          "#deebf7",
          "#c6dbef",
          "#9ecae1",
          "#6baed6",
          "#4292c6",
          "#2171b5",
          "#08519c",
          "#08306b",
        ],
        PuBuGn: [
          "#fff7fb",
          "#ece2f0",
          "#d0d1e6",
          "#a6bddb",
          "#67a9cf",
          "#3690c0",
          "#02818a",
          "#016c59",
          "#014636",
        ],
        Viridis: [
          "#440154",
          "#482777",
          "#3f4a8a",
          "#31678e",
          "#26838f",
          "#1f9d8a",
          "#6cce5a",
          "#b6de2b",
          "#fee825",
        ],
        Spectral: [
          "#9e0142",
          "#d53e4f",
          "#f46d43",
          "#fdae61",
          "#fee08b",
          "#ffffbf",
          "#e6f598",
          "#abdda4",
          "#66c2a5",
          "#3288bd",
          "#5e4fa2",
        ],
        RdYlGn: [
          "#a50026",
          "#d73027",
          "#f46d43",
          "#fdae61",
          "#fee08b",
          "#ffffbf",
          "#d9ef8b",
          "#a6d96a",
          "#66bd63",
          "#1a9850",
          "#006837",
        ],
        RdBu: [
          "#67001f",
          "#b2182b",
          "#d6604d",
          "#f4a582",
          "#fddbc7",
          "#f7f7f7",
          "#d1e5f0",
          "#92c5de",
          "#4393c3",
          "#2166ac",
          "#053061",
        ],
        PiYG: [
          "#8e0152",
          "#c51b7d",
          "#de77ae",
          "#f1b6da",
          "#fde0ef",
          "#f7f7f7",
          "#e6f5d0",
          "#b8e186",
          "#7fbc41",
          "#4d9221",
          "#276419",
        ],
        PRGn: [
          "#40004b",
          "#762a83",
          "#9970ab",
          "#c2a5cf",
          "#e7d4e8",
          "#f7f7f7",
          "#d9f0d3",
          "#a6dba0",
          "#5aae61",
          "#1b7837",
          "#00441b",
        ],
        RdYlBu: [
          "#a50026",
          "#d73027",
          "#f46d43",
          "#fdae61",
          "#fee090",
          "#ffffbf",
          "#e0f3f8",
          "#abd9e9",
          "#74add1",
          "#4575b4",
          "#313695",
        ],
        BrBG: [
          "#543005",
          "#8c510a",
          "#bf812d",
          "#dfc27d",
          "#f6e8c3",
          "#f5f5f5",
          "#c7eae5",
          "#80cdc1",
          "#35978f",
          "#01665e",
          "#003c30",
        ],
        RdGy: [
          "#67001f",
          "#b2182b",
          "#d6604d",
          "#f4a582",
          "#fddbc7",
          "#ffffff",
          "#e0e0e0",
          "#bababa",
          "#878787",
          "#4d4d4d",
          "#1a1a1a",
        ],
        PuOr: [
          "#7f3b08",
          "#b35806",
          "#e08214",
          "#fdb863",
          "#fee0b6",
          "#f7f7f7",
          "#d8daeb",
          "#b2abd2",
          "#8073ac",
          "#542788",
          "#2d004b",
        ],
        Set2: [
          "#66c2a5",
          "#fc8d62",
          "#8da0cb",
          "#e78ac3",
          "#a6d854",
          "#ffd92f",
          "#e5c494",
          "#b3b3b3",
        ],
        Accent: [
          "#7fc97f",
          "#beaed4",
          "#fdc086",
          "#ffff99",
          "#386cb0",
          "#f0027f",
          "#bf5b17",
          "#666666",
        ],
        Set1: [
          "#e41a1c",
          "#377eb8",
          "#4daf4a",
          "#984ea3",
          "#ff7f00",
          "#ffff33",
          "#a65628",
          "#f781bf",
          "#999999",
        ],
        Set3: [
          "#8dd3c7",
          "#ffffb3",
          "#bebada",
          "#fb8072",
          "#80b1d3",
          "#fdb462",
          "#b3de69",
          "#fccde5",
          "#d9d9d9",
          "#bc80bd",
          "#ccebc5",
          "#ffed6f",
        ],
        Dark2: [
          "#1b9e77",
          "#d95f02",
          "#7570b3",
          "#e7298a",
          "#66a61e",
          "#e6ab02",
          "#a6761d",
          "#666666",
        ],
        Paired: [
          "#a6cee3",
          "#1f78b4",
          "#b2df8a",
          "#33a02c",
          "#fb9a99",
          "#e31a1c",
          "#fdbf6f",
          "#ff7f00",
          "#cab2d6",
          "#6a3d9a",
          "#ffff99",
          "#b15928",
        ],
        Pastel2: [
          "#b3e2cd",
          "#fdcdac",
          "#cbd5e8",
          "#f4cae4",
          "#e6f5c9",
          "#fff2ae",
          "#f1e2cc",
          "#cccccc",
        ],
        Pastel1: [
          "#fbb4ae",
          "#b3cde3",
          "#ccebc5",
          "#decbe4",
          "#fed9a6",
          "#ffffcc",
          "#e5d8bd",
          "#fddaec",
          "#f2f2f2",
        ],
      },
      of = 0,
      uf = Object.keys(ff);
    of < uf.length;
    of += 1
  ) {
    var cf = uf[of];
    ff[cf.toLowerCase()] = ff[cf];
  }
  var lf = ff,
    hf = y;
  return (
    (hf.average = function (r, e, n) {
      void 0 === e && (e = "lrgb"), void 0 === n && (n = null);
      var t = r.length;
      n ||
        (n = Array.from(new Array(t)).map(function () {
          return 1;
        }));
      var a =
        t /
        n.reduce(function (r, e) {
          return r + e;
        });
      if (
        (n.forEach(function (r, e) {
          n[e] *= a;
        }),
        (r = r.map(function (r) {
          return new ta(r);
        })),
        "lrgb" === e)
      )
        return ha(r, n);
      for (
        var f = r.shift(), o = f.get(e), u = [], c = 0, i = 0, l = 0;
        l < o.length;
        l++
      )
        if (
          ((o[l] = (o[l] || 0) * n[0]),
          u.push(isNaN(o[l]) ? 0 : n[0]),
          "h" === e.charAt(l) && !isNaN(o[l]))
        ) {
          var h = (o[l] / 180) * ua;
          (c += ca(h) * n[0]), (i += ia(h) * n[0]);
        }
      var s = f.alpha() * n[0];
      r.forEach(function (r, t) {
        var a = r.get(e);
        s += r.alpha() * n[t + 1];
        for (var f = 0; f < o.length; f++)
          if (!isNaN(a[f]))
            if (((u[f] += n[t + 1]), "h" === e.charAt(f))) {
              var l = (a[f] / 180) * ua;
              (c += ca(l) * n[t + 1]), (i += ia(l) * n[t + 1]);
            } else o[f] += a[f] * n[t + 1];
      });
      for (var d = 0; d < o.length; d++)
        if ("h" === e.charAt(d)) {
          for (var b = (la(i / u[d], c / u[d]) / ua) * 180; b < 0; ) b += 360;
          for (; b >= 360; ) b -= 360;
          o[d] = b;
        } else o[d] = o[d] / u[d];
      return (s /= t), new ta(o, e).alpha(s > 0.99999 ? 1 : s, !0);
    }),
    (hf.bezier = function (r) {
      var e = (function (r) {
        var e, n, t, a, f, o, u;
        if (
          2 ===
          (r = r.map(function (r) {
            return new va(r);
          })).length
        )
          (e = r.map(function (r) {
            return r.lab();
          })),
            (f = e[0]),
            (o = e[1]),
            (a = function (r) {
              var e = [0, 1, 2].map(function (e) {
                return f[e] + r * (o[e] - f[e]);
              });
              return new va(e, "lab");
            });
        else if (3 === r.length)
          (n = r.map(function (r) {
            return r.lab();
          })),
            (f = n[0]),
            (o = n[1]),
            (u = n[2]),
            (a = function (r) {
              var e = [0, 1, 2].map(function (e) {
                return (
                  (1 - r) * (1 - r) * f[e] +
                  2 * (1 - r) * r * o[e] +
                  r * r * u[e]
                );
              });
              return new va(e, "lab");
            });
        else if (4 === r.length) {
          var c;
          (t = r.map(function (r) {
            return r.lab();
          })),
            (f = t[0]),
            (o = t[1]),
            (u = t[2]),
            (c = t[3]),
            (a = function (r) {
              var e = [0, 1, 2].map(function (e) {
                return (
                  (1 - r) * (1 - r) * (1 - r) * f[e] +
                  3 * (1 - r) * (1 - r) * r * o[e] +
                  3 * (1 - r) * r * r * u[e] +
                  r * r * r * c[e]
                );
              });
              return new va(e, "lab");
            });
        } else {
          if (!(r.length >= 5))
            throw new RangeError(
              "No point in running bezier with only one color."
            );
          var i, l, h;
          (i = r.map(function (r) {
            return r.lab();
          })),
            (h = r.length - 1),
            (l = (function (r) {
              for (var e = [1, 1], n = 1; n < r; n++) {
                for (var t = [1], a = 1; a <= e.length; a++)
                  t[a] = (e[a] || 0) + e[a - 1];
                e = t;
              }
              return e;
            })(h)),
            (a = function (r) {
              var e = 1 - r,
                n = [0, 1, 2].map(function (n) {
                  return i.reduce(function (t, a, f) {
                    return (
                      t + l[f] * Math.pow(e, h - f) * Math.pow(r, f) * a[n]
                    );
                  }, 0);
                });
              return new va(n, "lab");
            });
        }
        return a;
      })(r);
      return (
        (e.scale = function () {
          return ma(e);
        }),
        e
      );
    }),
    (hf.blend = Na),
    (hf.cubehelix = function (r, e, n, t, a) {
      void 0 === r && (r = 300),
        void 0 === e && (e = -1.5),
        void 0 === n && (n = 1),
        void 0 === t && (t = 1),
        void 0 === a && (a = [0, 1]);
      var f,
        o = 0;
      "array" === _a(a) ? (f = a[1] - a[0]) : ((f = 0), (a = [a, a]));
      var u = function (u) {
        var c = Aa * ((r + 120) / 360 + e * u),
          i = Ea(a[0] + f * u, t),
          l = ((0 !== o ? n[0] + u * o : n) * i * (1 - i)) / 2,
          h = Pa(c),
          s = Fa(c);
        return Oa(
          xa([
            255 * (i + l * (-0.14861 * h + 1.78277 * s)),
            255 * (i + l * (-0.29227 * h - 0.90649 * s)),
            255 * (i + l * (1.97294 * h)),
            1,
          ])
        );
      };
      return (
        (u.start = function (e) {
          return null == e ? r : ((r = e), u);
        }),
        (u.rotations = function (r) {
          return null == r ? e : ((e = r), u);
        }),
        (u.gamma = function (r) {
          return null == r ? t : ((t = r), u);
        }),
        (u.hue = function (r) {
          return null == r
            ? n
            : ("array" === _a((n = r))
                ? 0 === (o = n[1] - n[0]) && (n = n[1])
                : (o = 0),
              u);
        }),
        (u.lightness = function (r) {
          return null == r
            ? a
            : ("array" === _a(r)
                ? ((a = r), (f = r[1] - r[0]))
                : ((a = [r, r]), (f = 0)),
              u);
        }),
        (u.scale = function () {
          return Oa.scale(u);
        }),
        u.hue(n),
        u
      );
    }),
    (hf.mix = hf.interpolate = Rt),
    (hf.random = function () {
      for (var r = "#", e = 0; e < 6; e++)
        r += "0123456789abcdef".charAt(Ga(16 * Ra()));
      return new ja(r, "hex");
    }),
    (hf.scale = pa),
    (hf.analyze = Sa.analyze),
    (hf.contrast = function (r, e) {
      (r = new Ta(r)), (e = new Ta(e));
      var n = r.luminance(),
        t = e.luminance();
      return n > t ? (n + 0.05) / (t + 0.05) : (t + 0.05) / (n + 0.05);
    }),
    (hf.deltaE = function (r, e, n, t, a) {
      void 0 === n && (n = 1), void 0 === t && (t = 1), void 0 === a && (a = 1);
      var f = function (r) {
          return (360 * r) / (2 * Qa);
        },
        o = function (r) {
          return (2 * Qa * r) / 360;
        };
      (r = new $a(r)), (e = new $a(e));
      var u = Array.from(r.lab()),
        c = u[0],
        i = u[1],
        l = u[2],
        h = Array.from(e.lab()),
        s = h[0],
        d = h[1],
        b = h[2],
        p = (c + s) / 2,
        g = (za(Xa(i, 2) + Xa(l, 2)) + za(Xa(d, 2) + Xa(b, 2))) / 2,
        v = 0.5 * (1 - za(Xa(g, 7) / (Xa(g, 7) + Xa(25, 7)))),
        m = i * (1 + v),
        y = d * (1 + v),
        k = za(Xa(m, 2) + Xa(l, 2)),
        w = za(Xa(y, 2) + Xa(b, 2)),
        M = (k + w) / 2,
        N = f(Wa(l, m)),
        _ = f(Wa(b, y)),
        x = N >= 0 ? N : N + 360,
        A = _ >= 0 ? _ : _ + 360,
        E = Ka(x - A) > 180 ? (x + A + 360) / 2 : (x + A) / 2,
        F =
          1 -
          0.17 * Za(o(E - 30)) +
          0.24 * Za(o(2 * E)) +
          0.32 * Za(o(3 * E + 6)) -
          0.2 * Za(o(4 * E - 63)),
        P = A - x;
      (P = Ka(P) <= 180 ? P : A <= x ? P + 360 : P - 360),
        (P = 2 * za(k * w) * Ha(o(P) / 2));
      var O = s - c,
        j = w - k,
        G = 1 + (0.015 * Xa(p - 50, 2)) / za(20 + Xa(p - 50, 2)),
        R = 1 + 0.045 * M,
        q = 1 + 0.015 * M * F,
        L = 30 * Ja(-Xa((E - 275) / 25, 2)),
        I = -(2 * za(Xa(M, 7) / (Xa(M, 7) + Xa(25, 7)))) * Ha(2 * o(L)),
        B = za(
          Xa(O / (n * G), 2) +
            Xa(j / (t * R), 2) +
            Xa(P / (a * q), 2) +
            I * (j / (t * R)) * (P / (a * q))
        );
      return Va(0, Ua(100, B));
    }),
    (hf.distance = function (r, e, n) {
      void 0 === n && (n = "lab"), (r = new rf(r)), (e = new rf(e));
      var t = r.get(n),
        a = e.get(n),
        f = 0;
      for (var o in t) {
        var u = (t[o] || 0) - (a[o] || 0);
        f += u * u;
      }
      return Math.sqrt(f);
    }),
    (hf.limits = Sa.limits),
    (hf.valid = function () {
      for (var r = [], e = arguments.length; e--; ) r[e] = arguments[e];
      try {
        return new (Function.prototype.bind.apply(ef, [null].concat(r)))(), !0;
      } catch (r) {
        return !1;
      }
    }),
    (hf.scales = af),
    (hf.colors = sn),
    (hf.brewer = lf),
    hf
  );
});
